www.gusucode.com > DB-Libray 操作SQLServer编程的VC++ 一例-源码程序 > DB-Libray 操作SQLServer编程的VC++ 一例-源码程序\code\PhManage\SalesManDlg.cpp

    //Download by http://www.NewXing.com
// SalesManDlg.cpp : implementation file
//

#include "stdafx.h"
#include "PhysicM.h"
#include "SalesManDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CSalesManDlg dialog


CSalesManDlg::CSalesManDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CSalesManDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSalesManDlg)
	m_demo = _T("");
	m_name = _T("");
	//}}AFX_DATA_INIT
}


void CSalesManDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSalesManDlg)
	DDX_Control(pDX, IDC_SALESMAN_LIST, m_List);
	DDX_Text(pDX, IDC_DEMO_EDIT, m_demo);
	DDX_Text(pDX, IDC_SALESMAN_NAME, m_name);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSalesManDlg, CDialog)
	//{{AFX_MSG_MAP(CSalesManDlg)
	ON_BN_CLICKED(IDC_ADD_BUTTON, OnAddButton)
	ON_BN_CLICKED(IDC_DELETE_BUTTON,OnDelBtn)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSalesManDlg message handlers

BOOL CSalesManDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	m_List.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
	char *head[]={"序 号","销售人员名称","销售人员ID","备注"};
	int i;
	for (i=0;i<4;i++)
		m_List.InsertColumn(i,head[i],LVCFMT_LEFT,100);//(i==1) ? 150 : 100,i);

	ImageList=new CImageList();
	ImageList->Create(16,16,TRUE | ILC_COLOR32,2,0);
	ImageList->Add(AfxGetApp()->LoadIcon(IDI_ICONUSER));
	ImageList->Add(AfxGetApp()->LoadIcon(IDR_MENUVIEW_TMPL));
	m_List.SetImageList(ImageList,LVSIL_SMALL);// LVSIL_NORMAL);
	Init();
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
void CSalesManDlg::Init()
{
	DBLibrary DB(((CPhysicMApp *)AfxGetApp())->DBSession);
	try{
		DB.Open("select salesman_id sid,salesman_name sn,demo dm from salesman order by salesman_id");
		int id=0,no=0;;
		char pname[40];
		memset(pname,0,40);
		while(!DB.isEof())
		{
			sprintf(pname,"%03d",no+1);
			m_List.InsertItem(no,pname,0);
			DB.GetValue("sn",pname);
			m_List.SetItemText(no,1,(LPCTSTR)pname);
			id=DB.GetValue("sid");
			sprintf(pname,"%03d",id);
			m_List.SetItemText(no,2,(LPCTSTR)pname);
			memset(pname,0,40);
			DB.GetValue("dm",pname);
			m_List.SetItemText(no,3,(LPCTSTR)pname);
			no++;
			DB.Next();
		}
	}catch (DBErr &err)
	{
		char *str;
		int code;
		err.GetLastErr(code,&str);
		((CPhysicMApp *)AfxGetApp())->pMainFrm->AddErr("%s(%d)",str,code);
	}
	catch (...)
	{
		((CPhysicMApp *)AfxGetApp())->pMainFrm->AddErr("unknow err(%d)",-1);
	}

}
void CSalesManDlg::AddInfo(CString m_pname,CString m_dm)
{
	DBLibrary DB(((CPhysicMApp *)AfxGetApp())->DBSession);
	int max_id=0;
	try{
		DB.Open("select IDENT_CURRENT('salesman') did "
			" from INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='salesman' ");
		double id=0;
		DB.GetValue("did",&id);
		max_id=(int)id+1;
		DB.ExecSQL("INSERT INTO salesman (salesman_name,demo) "
			"VALUES('%s','%s')",m_pname,m_dm);
		((CPhysicMApp *)AfxGetApp())->pMainFrm->AddLog("新增销售人员:%s",m_pname);
		char no[4];
		int icount=m_List.GetItemCount();
		memset(no,0,4);
		sprintf(no,"%03d",icount+1);
		m_List.InsertItem(m_List.GetItemCount(),no,0);
		m_List.SetItemText(icount,1,(LPCTSTR)m_pname);
		sprintf(no,"%03d",max_id);
		m_List.SetItemText(icount,2,(LPCTSTR)no);
		m_List.SetItemText(icount,3,(LPCTSTR)m_dm);

	}
	catch (DBErr &err)
	{
		char *str;
		int code;
		err.GetLastErr(code,&str);
		((CPhysicMApp *)AfxGetApp())->pMainFrm->AddErr("%s(%d)",str,code);
	}
	catch(...)
	{
		((CPhysicMApp *)AfxGetApp())->pMainFrm->AddErr("unknow err(%d)",-1);
	}
}
BOOL CSalesManDlg::DestroyWindow() 
{
	// TODO: Add your specialized code here and/or call the base class
	if (ImageList) delete ImageList;
	return CDialog::DestroyWindow();
}

void CSalesManDlg::OnAddButton() 
{
	UpdateData();
	m_name.TrimRight();
	m_name.TrimLeft();
	if(m_name.IsEmpty())
	{
		((CPhysicMApp *)AfxGetApp())->pMainFrm->AddErr("销售人员名称不能为空,请输入");
		return;
	}
	AddInfo(m_name,m_demo);	
}

void CSalesManDlg::OnOK() 
{
	// TODO: Add extra validation here
	
//	CDialog::OnOK();
}
void CSalesManDlg::OnDelBtn()
{
	((CPhysicMApp *)AfxGetApp())->Delete("SalesMan","SalesMan_id",&m_List,2);

}